#include<iostream>
#include<pthread.h>
#include<unistd.h>
#include<stdio.h>

using namespace std;

// 测试线程等待pthread_join(pthread_t thread,void** retval);
//
// case_3.主线程调，结束自己线程

// 工作线程的入口函数
void* pthread_start(void* arg)
{
    // 工作线程
    int count = 30;
    while(count--)
    //while(1)
    {
        // 工作线程死循环不退出
        printf("I'm a word thread!\n");
        sleep(1);
    }
}

int main()
{
    //1.创建一个工作线程
    pthread_t tid;
    int ret = pthread_create(&tid, NULL, pthread_start, NULL);
    if(ret < 0)
    {
        cout << "pthread_create Error!" << endl;
        return 0;
    }
    getchar();   //作用：让主线程阻塞等待，当得到用户输入的字符后才能继续向下执行
    
    // 在主线程调用cancel接口退出之前，先让主线程调用等待接口
    pthread_join(tid, NULL);

    
    cout << "main use pthread_cancel()" << endl;
    pthread_cancel(pthread_self());  //主线程终止自己线程
    sleep(1);
    cout << "pthread_cancel error !" << endl;

    while(1)
    {
        printf("I'm a main thread! \n");
        sleep(1);
    }

    return 0;
}

